package at.jku.pervasive.recognition;

import java.io.IOException;
import java.util.Date;

public interface GesturePublisher
{

	/**
	 * Invoked when the concrete {@link GesturePublisher} shall start
	 * publishing.
	 * @throws IOException
	 */
	public abstract void startProducing() throws IOException;

	/**
	 * Invoked when the {@link GesturePublisher} shall stop publishing.
	 */
	public abstract void stopProducing();

	/**
	 * Invoked when a gesture of given type has finsished.
	 * @param gestureType
	 * @param duration
	 */
	public abstract void gestureFinished(GestureType gestureType, long duration);

	/**
	 * Invoked when a gesture of given type has started.
	 * @param gestureType
	 * @param timestamp
	 */
	public abstract void gestureStarted(GestureType gestureType, Date timestamp);

}